package com.lazy.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 幂等注解
 *
 * @author fengshaoyu
 * @date 2024/1/30 11:12
 */
@Inherited
@Target(ElementType.METHOD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Idempotent {

    /**
     * 幂等校验属性,不传入校验整体对象
     *
     * @return String el表达式值
     */
    String key() default "";

    /**
     * 过期时间
     *
     * @return int
     */
    int expireTime() default 3;

    /**
     * 指定时间单位
     *
     * @return TimeUnit
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 拦截后说明
     *
     * @return String
     */
    String info() default "重复请求，请稍后重试";

    /**
     * 是否执行完删除key
     *
     * @return boolean
     */
    boolean delKey() default false;
}
